// 该文件将上课讲到的所有排序函数模拟实现了
// 所有的排序函数可以大致分为两类: 1.比较排序 2.非比较排序
// 该文件里面写出来的排序算法有:

// 比较排序类:
// 1.插入排序
// 2.希尔排序
// 3.选择排序
// 4.堆排序
// 5.冒泡排序
// 6.快速排序(递归和非递归版本)
// 7.归并排序

// 非比较排序类：
// 1.计数排序

#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>

// 比较排序

// 插入排序

void InsertSort (int* arr , int n) ;

// 希尔排序

void ShellSort (int* arr , int n) ;

// 选择排序

void SelectSort (int* arr , int n) ;

// 堆排序

void HeapSort (int* arr , int n) ;

// 冒泡排序

void BubbleSort (int* arr , int n) ;

// 快速排序

void QuickSort (int* arr , int n) ;

// 非递归版本的快速排序---栈

void QuickSortNoR (int* arr , int n) ;

// 归并排序

void MergeSort (int* arr , int n) ;

// 非选择排序

// 计数排序

void CountSort (int* arr , int n) ;